home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Belgian Amiga Club - ADF Collection
/
BS1 part 34.zip
/
BS1 part 34
/
GFA basic training.adf
/
Sound
/
DIGISPIELEN.LST
< prev
next >
Wrap
File List
|
1989-06-01
|
2KB
|
69 lines
' Digitale Sounds spielen
@lesen
@einschalten
'
' Ton erklingt solange, bis eine Maustaste gedrückt wird
REPEAT
UNTIL MOUSEK
'
@ausschalten
END
' Hauptprogramm Ende
'
PROCEDURE lesen
' Um die Routine allgemein zu halten, wird FILESELECT benutzt
FILESELECT "Sample laden","Laden",":",sample$
'
' Sicherheitsabfrage, ob überhaupt ein Sample geladen werden
' soll
IF sample$="" OR RIGHT$(sample$)=":"
PRINT "Kein Sample laden ?"
END
ENDIF
'
' Die Länge des Samples ermitteln
OPEN "I",#1,sample$
lÄnge&=LOF(#1)
CLOSE #1
' Die Wortlänge des Samples darf nicht 65535 (=&Hffff) überschreiten,
' da das Audio-Datenlängen-Register nur wortlang ist.
IF SHR(lÄnge&,1)>65000
PRINT "Sampledatei zu lang"
END
ENDIF
'
' Reservierung des erforderlichen Datenspeichers.
' Chip-Memory soll reserviert werden, darum Code &H2.
speicheradr%=MALLOC(lÄnge&,&H2)
'
' Sicherheitsabfrage, ob der Speicher reserviert werden konnte
IF speicheradr%=0
PRINT "Speicher kann nicht reserviert werden!"
PRINT "Bitte alle anderen Fenster oder Programme schließen, bzw. beenden!"
END
ENDIF
'
' Informationen ausgeben:
PRINT "Sample-Namen: ";sample$
PRINT "Größe: ";lÄnge&
PRINT "Adresse: ";HEX$(speicheradr%)
' Das eigentliche Laden:
BLOAD sample$,speicheradr%
RETURN
PROCEDURE einschalten
' Jetzt werden die Audio-Register für Kanal 0 mit Daten versorgt
DPOKE &HDFF096,1 ! DMA Kanal 0 stoppen
LONG{&HDFF0A0}=speicheradr% ! Adresse der Daten übergeben
DPOKE &HDFF0A4,SHR(lÄnge&,1) ! Länge in Worten übergeben
DPOKE &HDFF0A6,100 ! Sample Period setzen
DPOKE &HDFF0A8,64 ! Lautstärke einstellen
DPOKE &HDFF096,&H8201 ! DMA Kanal 0 einschalten
RETURN
PROCEDURE ausschalten
' Ausschalten des Tons und Speicherrückgabe
DPOKE &HDFF096,1 ! DMA stoppen = Ton aus
frei%=MFREE(speicheradr%,lÄnge&) ! Speicher freigeben
PRINT
PRINT "Freigegeben:";frei%
RETURN